/**
 * 本js 同时创建一个客户端一个服务端
 */

const net =require('net')

function startServer() {
  let server = net.createServer()

  server.on('connection', socket => {
    socket.setEncoding('utf8')
    socket.on('data', (chunk) => {
      console.log('服务端接受到数据---》', chunk)
      socket.write('hi, 我是服务端')

      // socket.destroy()
    })
  })

  server.on('end', () => {
    console.log('服务端---end事件')

    // 在客户端断开与服务端的链接， 就使用 unref 退出应用程序
    server.unref()
  })
  server.on('close', () => {
    console.log('有客户端断开连接')
  })

  server.on('error', (err) => {
    console.log('服务端发生错误')
    console.log(err)
    socket.destroy()
  })

  server.listen(8080, () => {
    console.log('监听 8080 端口')
  })
}

function startClient() {
  let client = new net.Socket()

  client.setEncoding('utf8')

  client.connect(8080, '127.0.0.1', () => {
    console.log('客户端连接到服务端')

    client.write('客户端说，你好')
  })

  client.on('error', (err) => {
    console.log('客户端错误')
    console.log(err)

    client.destroy()
  })
  client.on('data', (data) => {
    console.log('客户端收到服务端数据---》', data)

    client.end()
  })


}

startServer()

setTimeout(() => {
  startClient()
}, 2000);